#ifndef GK_PC_SOLVER_H
#define GK_PC_SOLVER_H



#include <DataTypes.h>



#ifndef LP_STATUS
#define LP_STATUS
typedef enum _LP_status {LP_FEAS,LP_INF} LP_status;
#endif


// GK_PC_solver declarations
void calculateP(matrix_type *A,real *b,dreal *x, dreal *y, dreal *P,dreal delta, index m, index n);
void findRho(matrix_type *A,real *c,dreal *y,dreal &rho, index &q, integer m, integer n);
void updatePrimalDual(matrix_type *A, real *b,real *c,dreal *x,dreal *y, dreal *P,dreal &primal, dreal &dual,dreal eps, index q,dreal rho, integer m);
void updatePrimalDual(matrix_type *A, real *b,real *c,dreal *x,dreal *y, dreal *P,dreal &primal, dreal &dual,dreal eps, index q,dreal rho, integer m);
void scalePrimalDual(dreal *x, dreal *y, dreal primalScale, dreal dualScale,integer m, integer n);
LP_status GKPCSol(matrix_type *A, real *b, real *c, dreal *x, dreal *y, integer m, integer n,dreal omega);








#endif
